package fr.gestproj.facade;

import java.util.Calendar;

import javax.ejb.Stateless;
import javax.inject.Named;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

import fr.gestproj.model.Utilisateur;
import fr.gestproj.model.Utilisateur_;

/** @author Parrot */
@Named
@Stateless
public class UtilisateurFacade extends AbstractFacade<Utilisateur> {

	public Utilisateur getUtilisateurByUsername(String mail) {
		CriteriaQuery query = initQuery();
		Root utilisateur = query.from(entityClass);
		Predicate cond1 = builder().equal(utilisateur.get(Utilisateur_.email), mail);
		query.where(cond1);
		return getOne(query);
	}

	public Utilisateur modificationNombreEchecConnexion(Utilisateur utilisateur, int nombreEchecConnexion) {
		utilisateur.setNombreEchecConnexion(nombreEchecConnexion);
		return update(utilisateur);
	}

	public void modifierDateDerniereConnexion(Utilisateur utilisateur) {
		utilisateur.setDateDerniereConnexion(Calendar.getInstance().getTime());
		update(utilisateur);
	}

	public void reinitialiserToken(Utilisateur utilisateur) {
		utilisateur.setTokenModificationPassword(null);
		update(utilisateur);
	}

}
